package com.example.leo.mycharmingstudent.a0925;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.support.annotation.IntDef;
import android.util.Log;

public class MyService extends Service {
    private static final String TAG = "MyService";

    private int mProgress;

    public MyService() {
    }

    /**
     * Service创建的时候执行
     * 一个生命周期内，只执行一次
     */
    @Override
    public void onCreate() {
        super.onCreate();
        Log.e(TAG, "onCreate: ");
        new Thread(new Runnable() {
            @Override
            public void run() {
                for(;;){
                    mProgress += 1;
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    if(mProgress > 1000000){
                        break;
                    }
                }

            }
        }).start();
    }

    /**
     * 启动一次服务，就会调用一次onStartCommand方法
     */
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e(TAG, "onStartCommand: ");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public IBinder onBind(Intent intent) {
        Log.e(TAG, "onBind: ");
        /*
        为什么方法要去返回的类型是IBinder类型，但是此处返回MyBinder没有报错。
        温馨提示：Java是面向对象开发语言。面向对象开发语言有三大特性：
        封装、继承、多态。
        MyBinder继承自Binder，Binder实现了IBinder接口。
        所以，MyBinder对象，也是IBinder类型。
         */
        return new MyBinder();
    }

    @Override
    public boolean onUnbind(Intent intent) {
        Log.e(TAG, "onUnbind: ");
        return super.onUnbind(intent);
    }

    /**
     * Service被销毁的时候调用
     */
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.e(TAG, "onDestroy: ");
    }

    class MyBinder extends Binder{
        public int getProcess(){
            return mProgress;
        }
    }
}
